import type { Rule } from 'ant-design-vue/es/form';

// 验证字符串是否为空
export function isEmptyString(str: string): boolean {
  // 字符串为null、undefined、为空 均返回 false
  return !str || str.trim().length === 0;
}

// 验证手机号码
export function isPhoneNumber(phone: string): boolean {
  if (isEmptyString(phone)) return false;
  const reg = /^1[3456789]\d{9}$/g;
  return reg.test(phone);
}

// 验证 6位数字 验证码
export function isVerifyCode(code: string): boolean {
  if (isEmptyString(code)) return false;
  const reg = /^\d{6}$/g;
  return reg.test(code);
}

// 验证登录密码
export function isPassword(pw: string): boolean {
  if (isEmptyString(pw)) return false;
  const reg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,20}$/g;
  return reg.test(pw);
}

// 验证 登录密码 表单项规则
export const validatePassword = async (_rule: Rule, value: string) => {
  if (value === '' || !isPassword(value)) {
    return Promise.reject('密码在8-20位之间，必须包含大小写字母和数字');
  } else {
    return Promise.resolve();
  }
};

// 验证 账号（手机号码） 表单项规则
export const validateUsername = async (_rule: Rule, value: string) => {
  if (value === '' || !isPhoneNumber(value)) {
    return Promise.reject('请输入正确的手机号');
  } else {
    return Promise.resolve();
  }
};

// 验证 验证码 表单项规则
export const validateVerifyCode = async (_rule: Rule, value: string) => {
  if (value === '' || !isVerifyCode(value)) {
    return Promise.reject('请输入正确的六位验证码');
  } else {
    return Promise.resolve();
  }
};

// 验证 团队名 表单项规则
export const validateTeamName = async (_rule: Rule, value: string) => {
  if (isEmptyString(value) || value.length > 15) {
    return Promise.reject('不能为空 名称长度为1-15位');
  } else {
    return Promise.resolve();
  }
};

// 验证 白板名 表单项规则
export const validateBoardName = async (_rule: Rule, value: string) => {
  if (isEmptyString(value) || value.length > 25) {
    return Promise.reject('不能为空 名称长度为1-25位');
  } else {
    return Promise.resolve();
  }
};
